package cn.wolfcode.trip.base.mapper;

import cn.wolfcode.trip.base.domain.PrivateMessage;
import cn.wolfcode.trip.base.query.QueryObject;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface PrivateMessageMapper {
    int deleteByPrimaryKey(Long id);

    int insert(PrivateMessage record);

    PrivateMessage selectByPrimaryKey(Long id);

    List<PrivateMessage> selectAll();

    int updateByPrimaryKey(PrivateMessage record);

    /**
     * 根据登录者id和对话朋友的id查询所有对话,并进行分页
     *
     * @param qo
     * @return
     */
    List selectMessagesByUserIdAndFriendId(QueryObject qo);

    /**
     * 查询当前登录者的对话者和未读消息的数量
     *
     * @param qo
     * @return
     */
    List<Map> getFriendIdAndUnReadCount(QueryObject qo);

    /**
     * 更新消息状态的方法
     *
     * @param userId
     * @param friendId
     * @param status
     * @param sendTime
     */
    void updateStatus(@Param("userId") Long userId, @Param("friendId") Long friendId,
                      @Param("status") Integer status, @Param("sendTime") String sendTime);

    /**
     * 查询对应id所有未读消息的数量
     *
     * @param userId
     * @param status
     * @return
     */
    Integer getUnRead(@Param("userId") Long userId, @Param("status") Integer status);
}